借着之前使用群辉的由头,也是玩了 3 年 NAS 了。最近越发觉得群辉慢,有一些想法虽然基于群辉上的 Docker 可以做,但是就是慢,本身群辉的性能也不高,拓展性还低,趁着最近电脑降价比较多,装完双系统台式机后,准备再用手头的零件攒一台 All In One 主机。手头有台惠普 EliteDesk 800 G5 SFF,又淘了一些二手硬件,正好拿来折腾。有群辉的经验,装这个轻轻松松。准备用 PVE 做虚拟化基座,装 iKuai 软路由、OpenWrt、黑群晖、和飞牛 OS。
硬件配置
| 配件 | 型号 | 备注 |
|---|---|---|
| 机器 | 惠普 EliteDesk 800 G5 SFF | 小机箱,功耗低 |
| CPU | Intel Core i5-9500 | 6 核 6 线程,支持硬件虚拟化 |
| 内存 | 海力士 DDR4 8GB × 4 = 32GB | 四通道满配 |
| NVMe 1 | 西数 1TB | ZFS RAID1 系统盘 |
| NVMe 2 | 铠侠 1TB | ZFS RAID1 系统盘 |
| HDD 1 | 希捷 1TB 2.5 寸机械 | 群晖 SHR 存储池 |
| HDD 2 | 希捷 1TB 2.5 寸机械 | 群晖 SHR 存储池 |
| HDD 3 | 西数 1TB 3.5 寸机械 | 冷备盘 |
| 显卡 | AMD RX550 半高 | 飞牛 OS 硬件转码 |
| 网卡 | Intel i226-v 双口 2.5G PCIe | 软路由专用 |
主板有两条NVME插槽,四个内存插槽,四个PCIE插槽(x16、x4、x1、x1),三个机械硬盘盘位,除了手头的硬件,从网上淘了一块2.5G网卡,一块显卡,一根固态硬盘,两条DDR4内存条,基本拉满了,机箱还能再拓展几个SATA位置,但好像没什么需求,暂时收手,待机功耗也是整机考量的标准。
整体规划
网络设计
这台机器额外加了一块 Intel i226-v 双口 2.5G 网卡,主板自带一个千兆口,合计三个物理网口,职责划分如下:
| 虚拟网桥 | 绑定物理网口 | 职责 |
|---|---|---|
| vmbr0 | 主板千兆口 | PVE 管理专用,配置用,平时不接线 |
| vmbr1 | i226-v 口1 | iKuai WAN,接上层路由器 |
| vmbr2 | i226-v 口2 | iKuai LAN,2.5G 内网,接 WiFi6 路由器 |
网络拓扑:
1 | 互联网 |
设计要点:
- 两个网段的设计:由于设备并不会完全固定在一个网络中使用,因此外网的网段可能有变化,所以通过内网来固定设备地址IP,同时也跳过网口卡主板千兆的问题,本质上两个网段都可以访问设备,这样分开主要还是为了内网提速和软路由功能。
- vmbr0 作为备用管理入口:主板千兆口平时不接线,只在配置 PVE 或者内网出问题的时候临时接上网线从上层路由通过 124.x 地址访问。群晖、飞牛、OpenWrt 都有虚拟网桥挂在 vmbr0 上,因此插上网线后这些 VM 都可以通过 124.x 地址直接访问,不经过 iKuai,这些地址都在上层路由器通过静态IP配置,方便从路由器定位设备。
- 日常访问走 11 网段:家里设备连 WiFi6 路由器(AP 模式),流量经过 iKuai LAN,通过 11.x 地址访问各 VM,走 2.5G 链路,速度快且不依赖管理网线。
- iKuai 管内网:iKuai 有 vmbr0(管理外网)、vmbr1(WAN)和 vmbr2(LAN)三块虚拟网桥,在内网中提供软路由的功能,同时设置DNS和DHCP服务指向OpenWRT,对内网流量做二次加工(去广告,科学上网)。
各设备 IP 分配汇总:
| 设备 | 124.x(管理,插网线时可用) | 11.x(日常内网) | 常用访问入口 |
|---|---|---|---|
| PVE | 192.168.124.10 | — | https://192.168.124.10:8006 |
| iKuai | 192.168.124.12 | 192.168.11.1 | http://192.168.11.1:8888 |
| 黑群晖 | 192.168.124.11 | 192.168.11.11 | http://192.168.11.11:5000 |
| OpenWrt | 192.168.124.13 | 192.168.11.13 | http://192.168.11.13 |
| 飞牛 OS | 192.168.124.14 | 192.168.11.14 | http://192.168.11.14:5666 |
| WiFi6 路由器 | — | 192.168.11.2(静态) | http://192.168.11.2 |
iKuai 的 DHCP 地址池从 192.168.11.100 开始,.2 到 .99 留给固定 IP 设备。
存储设计
考虑到容灾备份,机器上除了备份盘全部是 RAID1 组合,同时群辉作为存算分离的管理器通过 SMB 向外提供存储空间。
整个系统的存储分三层,分别对应底层系统(NVMe),存算分离提供者(群辉 SATA + QEMU SSD),应用层(SMB 共享或 QEMU):
1 | ┌──────────────────────────────────────────────────┐ |
ZFS RAID1(两块 1TB NVMe)实际可用约 930GB(扣除 ZFS 元数据开销约 5%),由于本质上是共享内存,所以非极限场景分配超额也可以,分配明细:
| 用途 | 大小 |
|---|---|
| 飞牛 OS 虚拟盘 | 200 GB |
| 群晖共享 SSD | 250 GB |
| 群晖 SSD 缓存 × 2 | 60 GB |
| 群晖系统盘 | 32 GB |
| iKuai 系统盘 | 8 GB |
| OpenWrt 系统盘 | 8 GB |
| PVE 系统本身 | ~70 GB |
| 已分配合计 | ~628 GB |
| ZFS 性能预留(建议 20%) | ~186 GB |
| 剩余可自由支配 | ~116 GB |
存算分离设计
群辉生态成熟,且我已稳定运行多年,所以由群辉在内网作为存算分离的提供者,提供 QEMU 级别的 SSD 高速存储空间(本质是 NVMe 的 RAID1)和有两块读写加速的 SHR 机械硬盘组成的普通空间。飞牛 OS 影音和媒体服务更好用,两者通过 SMB 协议打通后,数据只存一份在群晖,飞牛容器直接读写,不重复占空间,且方便统一备份。
1 | 黑群晖(存储节点) 飞牛 OS(计算节点) |
一、下载 PVE 镜像 & 制作引导 U 盘
在浏览器打开 https://www.proxmox.com/en/downloads,下载最新 ISO(PVE 8.3,约 1.2 GB)。
引导盘用 Etcher 制作,界面简单直观,跨平台支持 Windows / macOS / Linux:
- 选择下载好的 PVE ISO
- 选择 U 盘
- 点击 Flash(U 盘原有数据会被清空,重要数据提前备份)
写入完成后拔出 U 盘插到目标机器的 USB 口(台式机推荐后置接口)。
二、安装 PVE
- 开机不断按 F12 进入启动选择,选 U 盘启动
- 选择 Install Proxmox VE (Graphical),回车
- 等待跑码阶段结束
- 点击 I agree 同意协议
选择安装硬盘(ZFS RAID1 关键步骤):点击右下角 Options,Filesystem 选择 zfs (RAID1),Harddisk 0 和 Harddisk 1 分别选两块 1T NVMe,点 OK 确认
ZFS RAID1 会将两块盘做镜像,任意一块损坏数据不丢失,代价是可用空间减半。
800 G5 SFF 要想两块 NVMe 被识别到需要在 BIOS 中关闭两个功能 配置 RAID 存储控制器和为 Intel Optane配置存储控制器。设置国家(China)、时区、键盘布局
- 设置 root 密码和邮箱
- 配置网卡、管理 IP(
192.168.124.10)、网关、DNS - 确认信息无误,点击 Install
- 安装完成后拔出 U 盘,点击 Reboot
重启后在局域网内任意浏览器访问 https://192.168.124.10:8006,用户名 root,密码为安装时设置的。
安装完成后在 Shell 中检查 ZFS 池状态:
1 | zpool status |
输出中 state: ONLINE 且两块盘均为 ONLINE 即表示 RAID1 正常工作。
三、优化 PVE(使用 pve_source 工具)
手敲命令容易出错,推荐用 pve_source 脚本工具,覆盖了 PVE 初始化的绝大部分必备操作。
在 PVE Web 页面打开 Shell,粘贴以下命令:
1 | wget -q -O /root/pve_source.tar.gz 'https://bbs.x86pi.cn/file/topic/2023-11-28/file/01ac88d7d2b840cb88c15cb5e19d4305b2.gz' && tar zxvf /root/pve_source.tar.gz && /root/./pve_source |
出现使用协议后输入 Y 回车,进入功能菜单。
后续再次调用:Shell 中输入
./pve_source(或输入./pve后按 Tab 自动补全)
3.1 更换软件源
输入 2 → 1,依次更换 PVE 软件源 + Debian 源,不知道选哪个镜像站直接选清华大学源。
执行完成后继续同样操作完成 PVE Ceph 源 和 PVE LXC 仓库源 的更换。
3.2 更新软件包
换源完成后有两种更新方式:
- Web 页面:点击 PVE 节点 → 更新 → 刷新 → 升级
- 脚本工具:菜单中输入
3、4分别更新软件包和系统
3.3 设置 DNS
菜单输入对应选项,或在 Web 页面:节点 → DNS → 编辑。推荐填阿里云公共 DNS:223.5.5.5 / 223.6.6.6。
3.4 去除订阅弹窗
菜单输入 6,脚本自动执行。完成后在浏览器强制刷新(Ctrl+Shift+R),登录不再弹窗。
PVE 系统更新后 JS 文件会被还原,重新执行一次
./pve_source→6即可。
3.5 美化概要信息
菜单输入 7,进入概要定制向导,选方案 1(高大全版本),可以显示 CPU 温度、硬盘温度、写入量等。
四、网络配置(创建虚拟网桥)
在 PVE Web → 节点 → 网络 中创建三个虚拟网桥:
- vmbr0:安装时自动创建,绑定主板千兆口,配置 PVE 管理 IP
192.168.124.10,网关填上层路由器地址。群晖、飞牛、OpenWrt 也各自有一块虚拟网卡挂在这个网桥上,作为备用管理入口。 - vmbr1:新建,桥接 i226-v 口1,不配 IP(iKuai WAN,接上层路由器)
- vmbr2:新建,桥接 i226-v 口2,不配 IP(iKuai LAN,2.5G 内网,物理上接 WiFi6 路由器)
创建完成后点击应用配置。
vmbr1 和 vmbr2 本身都不需要 IP,作为 L2 交换机由 iKuai 管理。所有内网 VM 只挂 vmbr2,通过 iKuai LAN 互联。
踩坑记录
1、VM 列表不显示 IP 地址
数据中心 → 选项 → 标记样式设定 → 树形结构选「完整」,保存后刷新即可看到 VM 旁边的 IP 标签。
2、PVE 升级后订阅弹窗复现
系统更新后 JS 文件会被还原,重新执行一次 ./pve_source → 6 即可。
3、PVE 无法识别 NVMe 硬盘
这个问题是这个主板的设置问题,在 BIOS 中关闭设置 配置 RAID 存储控制器和为 Intel Optane配置存储控制器,开启此功能 BIOS 会优先把控制器转给傲腾,导致 PVE 无法识别。
未完待续。